This is a rebuild of the clue compiler using newest sparse version
with additional parts as GNU GPL.

The sparse directory is the modified sparse-0.6.3 version

The directory sparse-0.6.3 is the original sparse from kernel.org

This sparse can compile all Linux kernel c source and check it.

This is compiling c to javascript which is almost not possible.

This uses sparse to compile the c source and then translate the
building blocks in the functions() to javascript source.

Then adding a crt0.js and clib.js creates a runnable javascript program.

There are many limitations on the input c to translate to javascript this way.

What not can be done:
- args as pointer to function() as in qsort()
- pointer + int as in c=*(p+1)
- switch() statements

possible sparse bugs or improvements needed:
line 1400 in linearize.c can cause endless loops
sparse warning "warning: non size-preserving pointer to integer cast" can loop forever

The 'sparse' C parser front-end library is copyrighted by Transmeta Corp
and other authors and licensed under the "MIT License" as
obtained from www.opensource.org (and included here-in for easy
reference).

[ This copy of the license is the flat-text version of original,
  available in its full glory at

	 http://opensource.org/licenses/MIT

  please refer to there for the authoritative and slightly more
  pretty-printed version ]

------

			The MIT License (MIT)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

The clue compiler has the Revised BSD license:

Copyright (c) 2008, David Given
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in
      the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

To understand more about how compilers work there is CS 6120 available
"Advanced Compilers: The Self-Guided Online Course"

https://www.cs.cornell.edu/courses/cs6120/2020fa/self-guided/

https://github.com/sampsyo/cs6120


